<script>
	import utils from './common/utils.js'
	import config from "./env/config.js";
	export default {
		onLaunch: function(e) {
			// 隐私政策
			// #ifdef APP-PLUS
			this.isFirstEnter();
			// #endif
			console.log('App Launch');
			//#ifdef MP-WEIXIN
			//检查更新
			this.updateManager();
			//#endif
			let self = this;
			// #ifdef APP-PLUS
			plus.runtime.getProperty(plus.runtime.tenantId, function(widgetInfo) {
				uni.request({
					url: config.app_url + '/api/front/index/update',
					data: {
						version: widgetInfo.version,
						tenantId: config.tenantId,
						platform: uni.getSystemInfoSync().platform
					},
					success: (result) => {
						var data = result.data.data;
						if (data.update && data.wgtUrl) {
							self.updateWgt(data.wgtUrl);
						}
						if (data.update && data.pkgUrl) {
							plus.nativeUI.confirm("有新版本更新，请点击确认更新到最新版本，以免影响使用", function(e) {
								if (e.index == 0) {
									plus.runtime.openURL(data.pkgUrl);
								}
							}, {
								"title": "更新提示",
								"buttons": ["确定", "取消"],
								"verticalAlign": "center"
							});
						}
					},
					error: (error) => {
						console.log('----------------error');
						console.log(error);
					}
				});
			});
			// #endif
			//应用启动参数
			this.onStartupScene(e.query);
			// #ifndef APP-PLUS
			//#endif
			this.getTabBarLinks();
		},
		beforeCreate() {},
		onShow: function() {

			// console.log('App Show')
		},
		onHide: function() {
			//console.log('App Hide')
		},
		methods: {
			isFirstEnter() {
				var firstEnter = uni.getStorageSync('firstEnter'); //同步获取缓存中是否有首次进入字段
				let self = this;
				uni.getSystemInfo({
					success(data) {
						console.log('firstEnter=' + firstEnter);
						// 如果是ios并且没有firstEnter缓存则弹出模态框
						if (data.platform == 'ios' && !firstEnter) {
							console.log('---------------');
							uni.navigateTo({
								url: '/pages/privacy/privacy'
							})
						}
					}
				})
			},
			updateManager: function() {
				const updateManager = uni.getUpdateManager();
				updateManager.onCheckForUpdate(function(res) {
					// 请求完新版本信息的回调
					if (res.hasUpdate) {
						updateManager.onUpdateReady(function(res2) {
							uni.showModal({
								title: '更新提示',
								content: '新版本已经准备好，即将重启应用',
								showCancel: false,
								success(res2) {
									if (res2.confirm) {
										// 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
										updateManager.applyUpdate();
									}
								}
							});
						});
					}
				});

				updateManager.onUpdateFailed(function(res) {
					// 新的版本下载失败
					uni.showModal({
						title: '更新提示',
						content: '检查到有新版本，但下载失败，请检查网络设置',
						showCancel: false
					});
				});
			},
			/**
			 * 小程序启动场景
			 */
			onStartupScene(query) {
				// 获取场景值
				let scene = utils.getSceneData(query);
				// 记录推荐人id
				let refereeId = query.refereeId;
				if (refereeId > 0) {
					if (!uni.getStorageSync('refereeId')) {
						uni.setStorageSync('refereeId', refereeId);
					}
				}
				// 记录分销人id
				let uid = scene.uid;
				if (uid > 0) {
					uni.setStorageSync('refereeId', uid);
				}
				// 邀请有礼id
				let invitationId = query.invitationId;
				if (invitationId > 0) {
					uni.setStorageSync('invitationId', invitationId);
				}
				let invitid = scene.invitid;
				if (invitid > 0) {
					uni.setStorageSync('invitationId', invitid);
				}
				// 如果是h5，设置appId
				// #ifdef  H5
				let appId = query.tenantId;
				if (appId > 0) {
					uni.setStorageSync('appId', appId);
				}
				if (uni.getStorageSync('appId')) {
					this.config.tenantId = uni.getStorageSync('appId');
				}
				// #endif
			},
			getTabBarLinks() {
				uni.request({
					url: this.config.app_url + '/api/front/index/nav',
					data: {
						tenantId: this.config.tenantId
					},
					success: (res) => {
						let nav = res.data.data.nav;
						let theme = res.data.data.theme.theme;
						this.$store.commit('changeTheme', theme);
						uni.setStorageSync('TabBar', nav);
						if (nav.isAuto == 0) {
							uni.showTabBar();
							nav.list = [];
							let color = ['#ff5704', '#19ad57', '#ffcc00', '#1774ff', '#e4e4e4', '#c8ba97',
								'#623ceb'
							]
							uni.setTabBarStyle({
								color: '#333333',
								selectedColor: color[theme],
							})
							uni.setTabBarItem({
								index: 0,
								text: '首页',
								iconPath: '/static/tabbar/home.png',
								selectedIconPath: '/static/tabbar/home_1' + theme + '.png'
							})
							uni.setTabBarItem({
								index: 1,
								text: '分类',
								iconPath: '/static/tabbar/category.png',
								selectedIconPath: '/static/tabbar/category_1' + theme + '.png'
							})
							uni.setTabBarItem({
								index: 2,
								text: '购物车',
								iconPath: '/static/tabbar/cart.png',
								selectedIconPath: '/static/tabbar/cart_1' + theme + '.png'
							})
							uni.setTabBarItem({
								index: 3,
								text: '我的',
								iconPath: '/static/tabbar/user.png',
								selectedIconPath: '/static/tabbar/user_1' + theme + '.png'
							})
							console.log('-----show--------')
							uni.setStorageSync('theme', theme);
						} else {
							console.log('-----hide--------')
							uni.hideTabBar();
						}



					}
				});
			},
			updateWgt(wgtUrl) {
				uni.showModal({
					title: '版本更新',
					content: '检查到有新版本，请点击更新',
					confirmText: "更新",
					showCancel: false,
					success: function(e) {
						if (e.confirm) {
							var dtask = plus.downloader.createDownload(
								wgtUrl, {},
								function(d, status) {
									uni.showToast({
										title: '下载完成',
										mask: false,
										duration: 1000
									});
									// 下载完成
									if (status == 200) {
										plus.runtime.install(d.filename, {
												force: true
											},
											function() {
												console.log('install success...');
												plus.nativeUI.alert(
													"已更新至最新版本，确定后将重启应用",
													function() {
														plus.runtime.restart();
													}, "更新提示", "确定");
											},
											function(e) {
												console.log(e);
												console.log(d.filename);
												uni.showToast({
													title: '安装失败-01',
													mask: false,
													duration: 1500
												});
											});
									} else {
										uni.showToast({
											title: '更新失败-02',
											mask: false,
											duration: 1500
										});
									}
								});
							try {
								dtask.start(); // 开启下载的任务
								var prg = 0;
								var showLoading = plus.nativeUI.showWaiting("正在下载"); //创建一个showWaiting对象
								dtask.addEventListener('statechanged', function(
									task,
									status
								) {
									// 给下载任务设置一个监听 并根据状态  做操作
									switch (task.state) {
										case 1:
											showLoading.setTitle("正在下载");
											break;
										case 2:
											showLoading.setTitle("已连接到服务器");
											break;
										case 3:
											prg = parseInt(
												(parseFloat(task.downloadedSize) /
													parseFloat(task.totalSize)) *
												100
											);
											showLoading.setTitle("  正在下载" + prg + "%  ");
											break;
										case 4:
											plus.nativeUI.closeWaiting();
											//下载完成
											break;
									}
								});
							} catch (err) {
								plus.nativeUI.closeWaiting();
								uni.showToast({
									title: '更新失败-03',
									mask: false,
									duration: 1500
								});
							}
						} else {
							//取消
						}
					}
				});
			},
		}
	}
</script>

<style lang="scss">
	@import './common/iconfont.css';
	@import './common/myIcon.css';
	/*每个页面公共css */
	@import './common/style.scss';

	page {
		background: #f6f6f6;
		font-size: 0.75rem;
		min-height: 100vh;
	}
</style>